import 'Storage.dart';
import 'dart:convert';

class SearchServices {
  // 设置搜索的数据
  static setHistoryData(keywords) async {
    /*
          1、获取本地存储里面的数据  (searchList)

          2、判断本地存储是否有数据

              2.1、如果有数据

                    1、读取本地存储的数据
                    2、判断本地存储中有没有当前数据，
                        如果有不做操作、
                        如果没有当前数据,本地存储的数据和当前数据拼接后重新写入


              2.2、如果没有数据

                    直接把当前数据放在数组中写入到本地存储

      */

    //注意：新版shared_preferences增加了可空类型，如果为空不会报错了，所以这里直接可以判断。
    String? searchList =
        await Storage.getString('searchList'); //这里存储的是map字符串所以需要json转化
    if (searchList != null) {
      List searchListData = json.decode(searchList);
      var hasData = searchListData.any((v) {
        return v == keywords;
      });
      if (!hasData) {
        searchListData.add(keywords);
        await Storage.setString('searchList', json.encode(searchListData));
      }
    } else {
      List tempList = [];
      tempList.add(keywords);
      await Storage.setString('searchList', json.encode(tempList));
    }
  }
  // 得到历史记录的数据
  static getHistoryList() async{
    String? searchList = await Storage.getString('searchList');
    if (searchList != null) {
      List searchListData = json.decode(searchList);
      return searchListData;
    }else {
      return [];
    }
  }

  // 清空历史记录
  static clearHistoryList() async {
    await Storage.remove('searchList');
  }

  // 删除单个历史记录
  static removeHistoryData(keywords) async {
    //注意：新版shared_preferences的可空类型
    String? searchList = await Storage.getString('searchList');
    if (searchList != null) {
      List searchListData = json.decode(searchList);
      searchListData.remove(keywords);
      await Storage.setString('searchList', json.encode(searchListData));
    }
  }
}
